// 原型式:借助原型可以基于已有的对象创建新对象，同时还不必须因此创建自定义的类型。

var person = {
  name: 'Andy',
  friends: ['Tom', 'Lucy']
};

// 1.第一种方式
/*function object(o) {
  function F() {}
  F.prototype = o;
  return new F();
}
var anotherPerson = object(person);
anotherPerson.name = 'Grey';
anotherPerson.friends.push('Bob');
var yetAnotherPerson = object(person);
yetAnotherPerson.name = "Linda";
yetAnotherPerson.friends.push("Barbie");
console.log(person.friends); //'Tom', 'Lucy', 'Bob', 'Barbie'*/

// 2.第二种方式
// ECMAScript5通过新增Object.create()方法规范化了原型式继承，
// 这个方法接收两个参数：一个用作新对象原型的对象和一个作为新对象定义额外属性的对象
var anotherPerson = Object.create(person);
anotherPerson.name = "Greg";
anotherPerson.friends.push("Rob");
var yetAnotherPerson = Object.create(person);
yetAnotherPerson.name = "Linda";
yetAnotherPerson.friends.push("Barbie");
console.log(anotherPerson.name);
console.log(anotherPerson.friends);
console.log(yetAnotherPerson.name);
console.log(yetAnotherPerson.friends);
console.log(person.name);
console.log(person.friends); //"Shelby","Court","Van","Rob","Barbie"
